package br.unicamp.ic.inf300.arena.modelo.pessoa;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public enum TipoEspectador {

	ESTUDANTE(1, "Estudante"),
	PROFISSIONAL(2, "Profissional");

	private int sequencial;

	private String descricao;

	private static final Map<Integer, TipoEspectador> mapa = new LinkedHashMap<Integer, TipoEspectador>();

	private TipoEspectador(int sequencial, String descricao) {
		this.sequencial = sequencial;
		this.descricao = descricao;
	}

	public int getSequencial() {
		return sequencial;
	}
	public void setSequencial(int sequencial) {
		this.sequencial = sequencial;
	}

	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public static TipoEspectador get(Integer sequencial) {
		return getMapa().get(sequencial);
	}
	private static final Map<Integer, TipoEspectador> getMapa() {
		if (mapa.isEmpty()) {
			for (TipoEspectador tipoEspect : TipoEspectador.values()) {
				mapa.put(tipoEspect.getSequencial(), tipoEspect);
			}
		}
		return mapa;
	}

	/**
	 * Retorna colecao de tipos de espectadores, metodo util para camada de apresentacao.
	 * @return
	 */
	public static Collection<TipoEspectador> getTipos() {
		return getMapa().values();
	}
}